/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.ufcg.boombox.util;

import br.edu.ufcg.boombox.view.PaginaInicialBoomBoxView;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URISyntaxException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.ImageIcon;

/**
 *
 * @author Targaryen
 */
public class Formatadores {
    
    public static String formataNomeDeUsuario(String nomeDeUsuario) {
        String resultado = "";
        StringTokenizer st = new StringTokenizer(nomeDeUsuario);
        
        List<String> listaNomes = new LinkedList<>();
        while(st.hasMoreElements()) {
            listaNomes.add((String)st.nextElement());
        }
        if(listaNomes.size() <= 2) {
            
            for( Iterator<String> iteradorNomes = listaNomes.iterator(); iteradorNomes.hasNext(); ){
                String nome = iteradorNomes.next();
                resultado += nome.substring(0, 1).toUpperCase() + 
                        (nome.length() > 1 ? nome.substring(1).toLowerCase() : "")+ " ";
            }
        } else {
            resultado += listaNomes.get(0).substring(0, 1).toUpperCase() +
                    (listaNomes.get(0).length() > 1 ? listaNomes.get(0).substring(1).toLowerCase() : "") + " ";
            int i = 1;
            for( ;i < listaNomes.size() - 1; i++   ){
                String nome = listaNomes.get(i).substring(0, 1).toUpperCase() + 
                        (listaNomes.get(i).length() > 1 ? listaNomes.get(i).substring(1).toLowerCase() : "");
                if(nome.equals("De") || nome.equals("Da")){
                    nome = nome.toLowerCase() + " ";
                } else{
                    nome = nome.substring(0, 1).toUpperCase() + ". ";
                }
                resultado += nome;
            }
            resultado += listaNomes.get(i).substring(0, 1).toUpperCase() +
                    (listaNomes.get(i).length() > 1 ? listaNomes.get(i).substring(1).toLowerCase() : "");
        }
        
        return resultado.trim();
    }
    
    public static String formataGeneroUsuario(String genero) {
        return "Gênero: "+genero.substring(0, 1).toUpperCase() + genero.substring(1).toLowerCase();
    }
    
    public static byte[] processaImagem(File arquivo) {
        
        try {
            BufferedImage imagem = ImageIO.read(new FileInputStream(arquivo));
            BufferedImage new_img = new BufferedImage(189, 208, 1);
            Graphics2D g = new_img.createGraphics();
            g.drawImage(imagem, 0, 0, 189, 208, null);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(new_img, "png", baos);
            byte[] bytesOut = baos.toByteArray();
            return bytesOut;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }
    
    public static Image iconToImage(Icon icon) {
        if (icon instanceof ImageIcon) {
            return ((ImageIcon) icon).getImage();
        } else {
            int w = icon.getIconWidth();
            int h = icon.getIconHeight();
            GraphicsEnvironment ge =
                    GraphicsEnvironment.getLocalGraphicsEnvironment();
            GraphicsDevice gd = ge.getDefaultScreenDevice();
            GraphicsConfiguration gc = gd.getDefaultConfiguration();
            BufferedImage image = gc.createCompatibleImage(w, h);
            Graphics2D g = image.createGraphics();
            icon.paintIcon(null, g, 0, 0);
            g.dispose();
            return image;
        }
    }
    
    public static BufferedImage iconToBufferedImage(Icon icon) {
        return Pictures.toBufferedImage(iconToImage(icon));
    }
    
//    public static void main(String[] args) {
//        StringTokenizer st = new StringTokenizer("nome  Da Usuario");
//        List<String> listaNomes = new LinkedList<String>();
//        while(st.hasMoreElements()) {
//            listaNomes.add((String)st.nextElement());
//        }
//        System.out.println(listaNomes.size());
//        System.out.println(formataNomeDeUsuario("samir trajano feitosa"));
//        
//        System.out.println(formataGeneroUsuario("Masculino"));
//    }
    
}
